package com.njts.oop;
//包声明:在Java项目中,为了统一代码的组织方式,使其更有层次感,推荐使用package(包)组织代码,建议放在文件的第一行
/**
 * @author David GE
 * Date  2025/11/18
 * 定义一个考生类
 */

public class Student{
    //类名命名规范:首字母大写,如果名称中含有多个单词,每个单词的首字母也要大写(大驼峰命名风格,尽量不要用拼音,其余与变量命名规则相同)
 // 一个文件中可包含多个类,但是只能有一个被public 关键字修饰的class,且这个class名称必须和文件名相同
 // 1 需求分析:考试时,需要填写哪些个人信息? 姓名,年龄,性别,学校名称,所在地,手机号,考生编号
 //数据定义->数据类型 ORM :对象关系模型 数据与类型之间的对应关系
 // 1) 文字->String
 // 2)整数->int
 // 3)大整数->long
 //4)小数->double
 //5)状态(是否)->boolean
 //对象的数据->属性 作用:描述对象的特征
 String name;
 int age;
 // 男 女
 String gender;
 String schoolName;// 小驼峰命名风格
 String address;
 //18100625350 // 标记
 String phone;// 8byte 64 bit 算术运算
 String number;
// 成员变量的默认值
 boolean isAtSchool;
 double credit;
 char sex;
 // 行为->方法定义(与函数区分)
  // 构造方法定义
 Student(String name){
    // 当不同作用域内的变量重名时,系统默认采取就近原则
     this.name=name;//这,此:谁调用这个方法,this代表谁(实例化对象)
 }
 // 普通方法
 void Student(){

 }
 //构造方法的重载
 Student(String name,int age,String gender,String schoolName,String address,String phone){
    this.name=name;
    this.age=age;
    this.gender=gender;
    this.schoolName=schoolName;
    this.address=address;
    this.phone=phone;
 }
 public void print(){
  int a=0;// 局部变量
  System.out.println(a);
  System.out.println(name);// null:空 void null和void区别? //1.void是方法返回值的类型声明,null表示空对象 2 null的本质(类型是Object) void只是一个声明
  System.out.println(age);//0
  System.out.println(sex);//0
  System.out.println(isAtSchool);//false
  System.out.println(credit);//0.0


 }
 public void printInfo(){
  System.out.println(name);
  System.out.println(age);
  System.out.println(gender);
  System.out.println(schoolName);
  System.out.println(address);
  System.out.println(phone);


 }

 public static void main(String[] args) {

    // 新建对象
  Student stu = new Student("gzl",30,"男","南京矽鼎","江宁区","18100625350");
  Student stu2 = new Student("zs");
  // 调用方法
  //stu.print();
  //stu2.name="gzl";
  stu.printInfo();
  stu2.printInfo();// 方法的运行结果不仅和方法的实现有关,也和调用者有关
  //3 构造方法
  // 我们发现:在新建对象时,在new关键字后面总是跟上相应的类,为什么还要跟上()?
  // 猜测:()是方法调用的符号->调用的是什么方法?
  //答:构造方法(函数)
  // 构造?1 表明此方法的调用时机在构造对象调用 2 作用:进行对象初始化

 }
}


